package main

import (
	"fmt"
	"strconv"
)

func main() {
	//将字符串转布尔
	var str string = "true"
	var b bool
	//这里b,_是因为ParseBool函数有两个返回值，(value string,err error)
	//_就是为了忽略第二个返回值err的
	b, _ = strconv.ParseBool(str)
	fmt.Printf("b type %T b value=%v \n", b, b)

	var str2 string = "FFFF" //16进制的65535
	var num int64
	//16是告诉函数当前str2里的内容代表的数字是16进制格式
	//32代表str2里的数字占用的bit数
	num, _ = strconv.ParseInt(str2, 16, 32)
	fmt.Printf("num type %T num value=%v \n", num, num)

	var str3 string = "12.341111112"
	var num2 float64
	num2, _ = strconv.ParseFloat(str3, 64)
	fmt.Printf("num2 type %T num2 value=%v \n", num2, num2)

	//注意若字符串的内容无法转成目标类型，比如 hello转int hello转bool
	//那么不会发生错误，而是会转成默认值，即0和false并返回

	var errorStr string = "hello"
	var errorNum int64
	var errorBool bool
	errorNum, _ = strconv.ParseInt(errorStr, 10, 32)
	errorBool, _ = strconv.ParseBool(errorStr)

	fmt.Printf("errorNum=%v errorBool=%v", errorNum, errorBool)

}
